home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: New Zealand Amiga Users Group
/
New Zealand Amiga Users Group Newsdisk v25 (1989-08)(NZAmigaUG).zip
/
New Zealand Amiga Users Group Newsdisk v25 (1989-08)(NZAmigaUG).adf
/
StrucBrowser
/
sb.src.zoo
/
SBWindow.c
< prev
Wrap
C/C++ Source or Header
|
1988-06-22
|
8KB
|
202 lines
/************************************************************************
* *
* SBWindow *
* *
*************************************************************************/
/* include not needed for Aztec C using provided makefile */
#include "sb:sb.h"
extern int level;
extern void PrWindow2(), PrWindow3();
void PrWindow(string, window) char *string; struct Window *window;
{
static struct StructData structdata[] = {
{ " NextWindow", "struct Window *", 5, PTRSIZE },
{ "-LeftEdge", "SHORT", 2, INTSIZE },
{ "-TopEdge", "SHORT", 2, INTSIZE },
{ "-Width", "SHORT", 2, INTSIZE },
{ "-Height", "SHORT", 2, INTSIZE },
{ "-MouseY", "SHORT", 2, INTSIZE },
{ "-MouseX", "SHORT", 2, INTSIZE },
{ "-MinWidth", "SHORT", 2, INTSIZE },
{ "-MinHeight", "SHORT", 2, INTSIZE },
{ "-MaxWidth", "SHORT", 2, INTSIZE },
{ "-MaxHeight", "SHORT", 2, INTSIZE },
{ " Flags", "ULONG", 11, PTRSIZE },
{ "(MenuStrip", "struct Menu *)", 5, PTRSIZE },
{ " Title", "UBYTE *", 4, PTRSIZE },
{ "(FirstRequest", "struct Requester *)", 5, PTRSIZE },
{ "(DMRequest", "struct Requester *)", 5, PTRSIZE }
};
static char *flagnames[32] = {
"WINDOWSIZING", "WINDOWDRAG", "WINDOWDEPTH", "WINDOWCLOSE",
"SIZEBRIGHT", "SIZEBOTTOM", "SIMPLE_REFRESH", "OTHER_REFRESH",
"BACKDROP", "REPORTMOUSE", "GIMMEZEROZERO", "BORDERLESS",
"ACTIVATE", "WINDOWACTIVE", "INREQUEST", "MENUSTATE",
"RMBTRAP", "NOCAREREFRESH", NULL, NULL,
NULL, NULL, NULL, NULL,
"WINDOWREFRESH", "WBENCHWINDOW", "WINDOWTICKED"
};
int sum, choice = -1;
ULONG bits;
level++;
while (choice) {
sum = SetOptionText(string, structdata, (APTR)window, DATASIZE, 0);
switch (choice = GetChoice(MAXGADG + 1)) {
case 1:
if (window->NextWindow)
PrWindow("The next window in Intuition's list", window->NextWindow);
break;
case 12:
bits = window->Flags & ~SUPER_UNUSED;
switch ((bits & REFRESHBITS) >> 6) {
case 0:
flagnames[6] = "SMART_REFRESH";
bits |= 0x40;
break;
case 1:
flagnames[6] = "SIMPLE_REFRESH";
break;
case 2:
flagnames[7] = "SUPER_BITMAP";
break;
case 3:
flagnames[7] = "OTHER_REFRESH";
bits ^= 0x40;
break;
}
FlagPrint("Flags set in this window", flagnames, bits);
break;
case 14:
PrString("The Window's Title", window->Title);
break;
case MOREGADG:
PrWindow2("Window menbers (page 2)", window, sum);
break;
}
}
level--;
}
void PrWindow2(string, window, offset)
char *string; struct Window *window; int offset;
{
static struct StructData structdata[] = {
{ "-ReqCount", "SHORT", 2, INTSIZE },
{ " WScreen", "struct Screen *", 5, PTRSIZE },
{ " RPort", "struct RastPort *", 5, PTRSIZE },
{ "-BorderLeft", "BYTE", 3, BYTESIZE },
{ "-BorderTop", "BYTE", 3, BYTESIZE },
{ "-BorderRight", "BYTE", 3, BYTESIZE },
{ "-BorderBottom", "BYTE", 3, BYTESIZE },
{ " BorderRPort", "struct RastPort *", 5, PTRSIZE },
{ " FirstGadget", "struct Gadget *", 5, PTRSIZE },
{ " Parent", "struct Window *", 5, PTRSIZE },
{ " Descendant", "struct Window *", 5, PTRSIZE },
{ "(Pointer", "USHORT *", 5, PTRSIZE },
{ "-PtrHeight", "BYTE", 3, BYTESIZE },
{ "-PtrWidth", "BYTE", 3, BYTESIZE },
{ "-XOffset", "BYTE", 3, BYTESIZE },
{ "-YOffset", "BYTE", 3, BYTESIZE }
};
int sum, choice = -1;
level++;
while (choice) {
sum = SetOptionText(string, structdata, (APTR)window, DATASIZE, offset);
switch (choice = GetChoice(MAXGADG + 1)) {
case 2:
if (window->WScreen)
PrScreen("The screen referenced in the window structure",
window->WScreen);
break;
case 3:
if (window->RPort)
PrRastPort("The window's RPort (RastPort)", window->RPort);
break;
case 8:
if (window->BorderRPort)
PrRastPort("The window's BorderRPort", window->BorderRPort);
break;
case 9:
if (window->FirstGadget)
PrGadget("The window's first gadget", window->FirstGadget);
break;
case 12:
printf("Sorry, selection not implemented\n\n");
break;
case 10:
if (window->Parent)
PrWindow("The 'parent' window", window->Parent);
break;
case 11:
if (window->Descendant)
PrWindow("The 'descendent' window", window->Descendant);
break;
case MOREGADG:
PrWindow3("Window members (page 3)", window, sum);
break;
}
}
level--;
}
void PrWindow3(string, window, offset)
char *string; struct Window *window; int offset;
{
static struct StructData structdata[] = {
{ " IDCMPFlags", "ULONG", 1, PTRSIZE },
{ " UserPort", "struct MsgPort *", 5, PTRSIZE },
{ " WindowPort", "struct MsgPort *", 5, PTRSIZE },
{ "(MessageKey", "struct IntuiMessage *)", 5, PTRSIZE },
{ "-DetailPen", "UBYTE", 13, BYTESIZE },
{ "-BlockPen", "UBYTE", 13, BYTESIZE },
{ "(CheckMark", "struct Image *)", 5, PTRSIZE },
{ " ScreenTitle", "UBYTE", 4, PTRSIZE },
{ "-GZZMouseX", "SHORT", 2, INTSIZE },
{ "-GZZMouseY", "SHORT", 2, INTSIZE },
{ "-GZZWidth", "SHORT", 2, INTSIZE },
{ "-GZZHeight", "SHORT", 2, INTSIZE },
{ "(ExtData", "UBYTE *)", 5, PTRSIZE },
{ "(UserData", "BYTE *)", 5, PTRSIZE },
{ "(WLayer", "struct Layer *)", 5, PTRSIZE }
};
static char *IDCMPnames[32] = {
"SIZEVERIFY", "NEWSIZE", "REFRESHWINDOW", "MOUSEBUTTONS",
"MOUSEMOVE", "GADGETDOWN", "GADGETUP", "REQSET",
"MENUPICK", "CLOSEWINDOW", "RAWKEY", "REQVERIFY",
"REQCLEAR", "MENUVERIFY", "NEWPREFS", "DISKINSERTED",
"DISKREMOVED", "WBENCHMESSAGE", "ACTIVATEWINDOW", "INACTIVEWINDOW",
"DELTAMOVE", "VANILLAKEY", "INTUITICKS", NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, "LONELYMESSAGE"
};
int sum, choice = -1;
level++;
while (choice) {
sum = SetOptionText(string, structdata, (APTR)window, DATASIZE, offset);
switch (choice = GetChoice(DATASIZE)) {
case 1:
FlagPrint("IDCMP flags set in this window",
IDCMPnames, window->IDCMPFlags);
break;
case 2:
if (window->UserPort)
PrMsgPort("Window->UserPort",window->UserPort);
break;
case 3:
if (window->WindowPort)
PrMsgPort("Window->WindowPort",window->WindowPort);
break;
case 8:
PrString("The screen title when this window is activated",
window->ScreenTitle);
break;
}
}
level--;
}